print_dir = lib/kernel/
$(print_dir)put_char.o:$(print_dir)put_char.asm
	nasm -f elf -o $@ $^
$(print_dir)print_string.o:$(print_dir)print_string.asm
	nasm -f elf -o $@ $^
$(print_dir)print_int.o:$(print_dir)print_int.asm
	nasm -f elf -o $@ $^
$(print_dir)string.o:$(print_dir)string.c
	gcc -m32 -c -fno-builtin -o $@ $^
kernel/debug.o:kernel/debug.c
	gcc -m32 -c -o $@ $^
kernel/main.o:kernel/main.c
	gcc -m32 -c -o kernel/main.o kernel/main.c
kernel/memsize.o:kernel/memsize.asm
	nasm -f elf -o $@ $^
kernel/memory.o:kernel/memory.c
	gcc -m32 -c -o $@ $^
kernel/interrupt.o:kernel/interrupt.c
	gcc -m32 -c -o $@ $^
thread/switch.o:thread/switch.asm
	nasm -f elf -o $@ $^
thread/thread.o:thread/thread.c
	gcc -m32 -c -o $@ $^
kernel.bin:kernel/main.o kernel/debug.o thread/thread.o kernel/interrupt.o thread/switch.o kernel/memory.o kernel/memsize.o $(print_dir)string.o $(print_dir)print_string.o $(print_dir)print_int.o $(print_dir)put_char.o
	ld -Ttext 0xc0001500 -melf_i386 -e main -o $@ $^
print_int:$(print_dir)print_int.o
	@echo "Compile print_int."
loader.bin:loader.asm
	nasm -o $@ $^
wt_loader:loader.bin
	dd if=loader.bin of=x.img bs=512 count=5 seek=2 conv=notrunc
wt_kernel:kernel.bin
	dd if=kernel.bin of=x.img bs=512 count=200 seek=9 conv=notrunc 
clear:
	rm -rf *.o